Distributed applications typically run on a system with multiple nodes. A variety of message exchanges are used by the distributed applications to communicate internally among the nodes. To maintain a consistent state for the overall application, the message exchanges often require a third party coordinator to ensure that the individual nodes send, receive, and process these messages without failure. The third party coordinator allows the entire exchange to be rolled back, if needed, and provides proper compensating logic. In a typical distributed application, a distributed transaction coordinator must be deployed and managed on each node of the system. The developer must explicitly opt-in to using transactions in the third party coordinator program. However, in certain environments, such as cloud computing, where such third party coordinators are unavailable, the developer bears the burden to ensure consistency in the messaging exchanges.